# -*- coding: utf-8 -*- 
# @project : 《Atcoder》
# @Author : created by bensonrachel on 2021/7/15
# @File : （step2）B. Ropes（CF）.py
# https://codeforces.com/edu/course/2/lesson/6/2/practice/contest/283932/problem/B

# 绳子问题，非整数的二分，所以不能用while（l+1<r）这样的，只能用for循环结束循环。
# 类型不能为double。


def bi_rope(char: list, q):
    l = 0
    r = max(char) + 1
    for _ in range(100):# Usually, you can always write 100 iterations and not think.
        mid = (l + r) / 2 # float类型
        k = 0
        for i in char:
            k += i // mid #计数以当前长度值分割的话所有绳子总共可以被切为几段。
        if (k >= q):
            l = mid
        else:
            r = mid
    return l


if __name__ == '__main__':
    n, k = map(int, input().split())
    char = []
    for _ in range(n):
        x = int(input())
        char.append(x)
    res = bi_rope(char, k)
    print(res)
"""
题目要求我们求使总分割数为k的最大值x（不一定是整数）

因为小于等于x的都可以使总分割数达到k（大于等于k），因为不知道x ，不像二分查找那样知道x 所以条件就要写成（大于等于k）
然后用求不大于x的最大值的模板套进去就行了。
"""